<%@page contentType="text/html;charset=utf-8" language="java" %>
<%--
JSP是Java Server Pages
允许在页面中使用Java作为脚本语言,动态生成HTML代码
--%>

<%--
jsp的本质:
当tomcat启动的时候,它会把jsp页面编译成java代码,这个java代码继承的是Httpjspbase,而jsp本质上就是一个servlet,
它有一个方法是_jspService(核心方法);写jsp页面与写java代码没有任何区别,只是他会先被编译生成java代码
--%>
<%--
jsp的生命周期:
启动tomcat->用户请求aa.jsp(举例)->tomcat会检测是否第一次请求该jsp->是第一次->aa_jsp.java编译成.class->执行.class文件(调用里面的service方法),相当于运行一个servlet
启动tomcat->用户请求aa.jsp(举例)->tomcat会检测是否第一次请求该jsp->不是第一次->直接执行.class文件,相当于运行一个servlet
--%>


<%--
jsp首先和html的区别:
html可以直接放在浏览器中运行
但是jsp必须把tomcat启动起来才能看到效果
--%>
<%--
JSP页面有以下几部分:
1.静态内容
2.指令
3.表达式
4.脚本
5.声明
6.注释
--%>
<!--
1.注释:
第一种:跟HTML注释一样,这里就是第一种
这种注释在客户端可以看见
-->
<%--
第二种:jsp的自己的注释,这里是第二种jsp注释
在客户端看不见,在编译时,会被干掉
--%>
<%
    //标准Java注释
    /*
    这里也是标准Java注释
    这种注释只能写在jsp脚本中
     */
    out.println("Hello World");
%>
<%--
2.JSP指令:
JSP页面可以在最上方加入一些当前页面的配置等信息,叫做JSP指令,
JSP指令一共有3个
page:当前页面的配置信息,最为常用的
include:在一个页面中,将另一个文件嵌入其中
taglib:引入标签库,这个基本不会讲了

page指令:
语法:
<%@ page 属性1="属性值" 属性2="属性值"....%>
常见属性:
1.language:指定当前jsp页面所使用的脚本语言,默认值是Java
2.import:引包,当页面中使用到其他包下的Java类时,使用该属性引包
3.contentType;为页面添加响应头contentType,默认值是:text/html;ISO-8859-1,我们需要改成utf-8
4.pageEncoding:设置当前页面的编码格式,默认值是ISO-8859-1,如果设置了contentType,那么就会跟contentType保持一致,
不需要单独设置了
5.errorPage:当前页面出错,浏览器会自动跳转到另一个页面,只能决定当前这个jsp出错的行为,我们一般会使用web.xml去统一
配置整个项目的出错页面,而不会一个jsp一个jsp的配置
6.isErrorPage:是否是,专门处理错误信息的页面,标记为true后,可以使用jsp九大内置对象中的Exception
--%>
<%--
3.jsp脚本:下面尖括号里的
--%>
<%
    //在这里写Java代码
    //可以写任何Java代码,但是不能够定义方法,全局变量
    //所有的脚本会原样的复制进_jspService方法中
    /*
    里面只能写Java代码,并且所有的jsp脚本,都会和html代码混合复制进_jspService方法中,
    所以不需要在一个脚本中写一段完整的java代码,示例看test01,table隔行换色
     */
%>
<%--
4.静态内容:
静态内容,所有直接写在jsp文件中的没有被任何jsp标签包裹的都是静态内容,
即所有的html代码,就是静态内容
--%>
<%--
5.声明:
用来写自定义方法,成员变量
见test02
--%>
<%--
6.表达式:
表达式是在html代码中使用声明中定义的全局变量或jsp脚本中定义的局部变量而存在的,
即表达式是没有复杂逻辑,只能取值用的
--%>